“Message passing” generally refers to a form of communication used in concurrent computing, parallel computing, object-oriented programming and interprocess communication. Communication is accomplished by the sending of messages to recipients. Forms of messages include function invocations, signals and data packets. Message-passing-model-based programming languages typically define messaging as the (usually asynchronous) sending (usually by copy) of a data item to a communication endpoint (actor, process, thread, socket, etc.). Messages are also commonly used in the same sense as a means of interprocess communication; the other common technique of interprocess communication being streams or pipes, in which data are sent as a sequence of elementary data items instead.
In consideration of message passing for interprocess communication, a message from an origin process to a destination process typically passes, first, to the operating system supporting the execution of the origin process and the destination process. The operating system then handles the passing of the message to the destination process. In some instances, execution of the origin process and the destination process is supported by a virtual machine, where execution of the virtual machine is supported by the operating system. An example virtual machine is the well-known Java™ virtual machine, i.e., the Java™ Runtime Environment. Where a virtual machine is interposed between the processes and the operating system, a message from the origin process is first received by the virtual machine and passed by the virtual machine to the operating system. The operating system then handles the passing of the message to the destination process via the virtual machine.
It would be desirable to improve the manner in which messages are handled by the operating system.